﻿using Nop.Core;
using Nop.Core.Domain.WindAlert;
using System;
using System.Collections.Generic;


namespace Nop.Services.WindAlert
{
    /// <summary>
    /// Wins data service
    /// </summary>
    public partial interface IWindDataService
    {

        /// <summary>
        /// Clears a log
        /// </summary>
        void ClearAll();

        /// <summary>
        /// Deletes a windData
        /// </summary>
        /// <param name="windData">WindData</param>
        void DeleteWindData(WindData windData);

        /// <summary>
        /// Gets all windDatas
        /// </summary>
        /// <param name="showHidden">A value indicating whether to show hidden records</param>
        /// <param name="windDataId">Station Id</param>
        /// <returns>Station collection</returns>
        IList<WindData> GetAllWindData();

        /// <summary>
        /// Gets all windDatas
        /// </summary>
        /// <param name="pageIndex">Page index</param>
        /// <param name="pageSize">Page size</param>
        /// <param name="showHidden">A value indicating whether to show hidden records</param>
        /// <param name="windDataId">winddata Id</param>
        /// <returns>windata</returns>
        IPagedList<WindData> GetAllWindData(int pageIndex, int pageSize);


        /// <summary>
        /// Gets all winddata items
        /// </summary>
        /// <param name="fromUtc">windata item creation from; null to load all records</param>
        /// <param name="toUtc">windata item creation to; null to load all records</param>
        /// <param name="message">Message</param>
        /// <param name="pageIndex">Page index</param>
        /// <param name="pageSize">Page size</param>
        /// <returns>winddata item collection</returns>
        IPagedList<WindData> GetAllWindData(DateTime? fromUtc, DateTime? toUtc, int pageIndex, int pageSize);
       
        /// <summary>
        /// Gets a windData
        /// </summary>
        /// <param name="windDataId">Station identifier</param>
        /// <returns>Station</returns>
        WindData GetWindDataById(int windDataId);

        /// <summary>
        /// Get wind data items by identifiers
        /// </summary>
        /// <param name="windataIds">winddata item identifiers</param>
        /// <returns>Winddata items</returns>
        IList<WindData> GetWindDataByIds(int[] windaDataIds);

        /// <summary>
        /// Get wind data itemby station Id
        /// </summary>
        /// <param name="StationIds">wind station identifiers</param>
        /// <returns>Winddata items</returns>
        IList<WindData> GetWindDataBySpotId(int spotId, int backHours = 0);

        /// <summa;ry>
        /// Get wind data item by station Id top 1
        /// </summary>
        /// <param name="StationIds">wind station identifiers</param>
        /// <returns>Winddata items</returns>
        WindData GetWindDataBySpotIdTop1(int spotId);

        /// <summary>
        /// Inserts a windData
        /// </summary>
        /// <param name="windData">Station</param>
        void InsertWindData(WindData windData);

        WindData UpdateStation(Spot spot);

  
    }
}
